home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
User's Choice Windows CD
/
User's Choice Windows CD (CMS Software)(1993).iso
/
win_m_p
/
pwez51.zip
/
MULTSAM3.BAS
< prev
next >
Wrap
BASIC Source File
|
1992-04-01
|
5KB
|
127 lines
DECLARE SUB SETINPT (SCRN%, WID%, EX$, INPT%(), INPT$(), BC%)
DECLARE SUB SETWIND (FST%, S%, SH%)
DECLARE SUB MULTINPT (SCRN%, TOFLD%, EXIT$, AEXIT%, RKEY%, RTRN$())
DECLARE SUB MAKEWIND (W%, LABEL$, TR%, LC%, WD%, NR%, ATTR%, BORDER%)
DECLARE SUB PRINTW (TEXT$, R%, LC%)
DECLARE SUB INPTINIT (DFORMAT%, ISDOT%, EXIT$)
'***************************************************************************
' This is an example of using auto-exit fields in MULTINPT to print an ****
' instruction line. ****
'***************************************************************************
'**** THIS PROGRAM MUST BE USED WITH ONE OF THE FOLLOWING LIBRARIES: ****
'***************************************************************************
'**** For QB4.+ unenhanced version use QB4UNEN.QLB ****
'**** For BASIC 7.+ unenhanced version use PDSUNEN.QLB ****
'**** For QB4.50 enhanced version use QBALL45.QLB or QBNER45.QLB ****
'**** For QB4.00/4.00b enhanced version use QBALL40.QLB or QBNER40.QLB ****
'**** For BASIC 7.0 enhanced version use PDSALL70.QLB or PDSNER70.QLB ****
'**** For BASIC 7.1 enhanced version use PDSALL71.QLB or PDSNER71.QLB ****
'**** Load QB or QBX with the /L option using the correct library ****
'***************************************************************************
CALL SETWIND(1, 1, 7) ' INITIALIZE WINDOW MEMORY
CALL INPTINIT(1, 1, "") ' INITIALIZE INPUT MEMORY
COLOR 7, 0: CLS ' BLANK THE SCREEN
DIM RTRN$(4) ' FOR THE FOUR FIELDS
DIM I AS STRING * 76 ' FOR THE INSTRUCTION LINE
'---------------------------------------------------------------------------
' SETINPT MUST BE CALLED FOR EACH MULTI-FIELD INPUT SCREEN
REDIM INPT%(25), INPT$(4)
TOFLD% = 1: B% = 1
DO
READ INPT%(B%)
IF INPT%(B%) = 9999 THEN EXIT DO
B% = B% + 1
FOR X% = 1 TO 5
READ INPT%(B%)
B% = B% + 1
NEXT
READ INPT$(TOFLD%)
TOFLD% = TOFLD% + 1
LOOP
' Auto-exit ( always ) - auto advance - numeric with no decimal places
DATA 11000,5,5,4,15,99,""
' Auto-exit ( always ) - auto advance - numeric with no decimal places
DATA 11000,7,5,4,15,99,""
' Protected - numeric with no decimal places
DATA 100,9,5,5,15,99,""
' Auto-exit ( always ) - Alpha / numeric
DATA 10007,11,5,15,15,99,""
DATA 9999
CALL SETINPT(1, 80, "E", INPT%(), INPT$(), 0) ' SET UP MULTI-INPUT AND
ERASE INPT%, INPT$ ' GET THE MEMORY BACK.
'----------------------------------------------------------------------------
' THE MAIN PROGRAM
' program
' program
GOSUB AUTOEXITEXAMPLE
' program
' program
END
'---------------------------------------------------------------------------
' MULTI-FIELD SUB-ROUTINE
AUTOEXITEXAMPLE:
TOFLD% = 1: AUTOEXIT% = 0: ' START IN FIELD 1. PRINT ALL
' FIELDS.
'----------------------------------------------------------------------------
' MAKE A WINDOW. PRINT INSTRUCTIONS
CALL MAKEWIND(1, "@Auto-exit fields used print an instruction line", 1, 1, 80, 16, 112, 102)
CALL PRINTW("Auto-exit and auto advance with numeric input", 2, 15)
CALL PRINTW("+", 3, 5)
CALL PRINTW("Auto-exit and auto advance with numeric input", 4, 15)
CALL PRINTW("Protected Field", 6, 15)
CALL PRINTW("Alpha-numeric", 8, 24)
CALL PRINTW("Press ESC to end demonstration", 10, 100)
CALL NEWCOLOR(15)
'----------------------------------------------------------------------------
PREINPT:
SELECT CASE TOFLD% ' CURSOR MOVING TO WHICH FIELD?
CASE 1 ' FIELD 1
I = "Input the first number." ' INSTRUCTIONS
CASE 2 ' FIELD 2
I = "Input the second number." ' "
CASE 4 ' FIELD 4
I = "Input anything!" ' "
END SELECT
I = "INSTRUCTION FOR FIELD" + STR$(TOFLD%) + ": " + I
CALL PRINTW(I, 12, 2) ' PRINT INSTRUCTIONS
CALL MULTINPT(1, TOFLD%, "", AUTOEXIT%, RKEY%, RTRN$())
' FIRST CHECK TO SEE IF THE EXIT WAS DUE TO FIELD 1 OR 2 BEING EXITED,
' EITHER BY THE AUTO-EXIT FEATURE OR BY THE "ESC" KEY.
' ON EXIT AUTOEXIT% POINTS TO THE FIELD THE CURSOR WAS ON WHEN MULTINPT
' WAS EXITED ( IF IT WAS AN AUTOEXIT FIELD. ). ON EXIT TOFLD% POINTS TO
' THE FIELD THE CURSOR IS MOVING INTO.
' THE CALL TO MULTINPT IN THE "IF - END IF" BLOCK IS USED TO UPDATE
' FIELD 3 ONLY.
IF AUTOEXIT% = 1 OR AUTOEXIT% = 2 THEN ' FIELD 1 OR 2. UPDATE
RTRN$(3) = STR$(VAL(RTRN$(1)) + VAL(RTRN$(2))) ' THE PROTECTED FIELD 3.
IF RTRN$(1) + RTRN$(2) = "" THEN RTRN$(3) = ""
CALL MULTINPT(1, 1, "VIEW", 3, JUNK%, RTRN$()) ' UPDATE FIELD 3 ONLY.
END IF
IF RKEY% <> 27 GOTO PREINPT ' WAS NOT ESC.
' UPON EXIT OF MULTINPT TOFLD%
' IS SET TO NEXT FIELD NUMBER
' FOR THE CURSOR.
RETURN ' PROGRAM WILL ALWAYS COMES HERE IF ESC
' IS PRESSED AS RKEY% = 27